<?php
class UsuarioasseController extends Zend_Controller_Action{
    
    private $session;

    public function init() {
        parent::init();
        $this->session = new Zend_Session_Namespace("consulta");
       
    }
    
   
    
    public function verificarusuarioAction(){
        //Esto es por si en algun momento se cae el padron de ususarios, entonces al desactivarlo no controla y solo verifica que este en el historico
        $desactivarPadron=1;
        //Variable que guarda si la persona esta en el historico
        $noHistorico=0;
        //Si tiene un id en el historico es xq ya eleji cual puede inscribirse 
        if($this->_hasParam("idHist")){
            include_once("Clases/Persona.php");
            $idSeleccionado=$this->_getParam("idHist");
            $puedenn = $this->session->__get("usuPueden");
            $usuarioSeleccionado;
            foreach($puedenn as $serializado){
                $deserializado=unserialize($serializado);
                if($deserializado->getNroHistorico()==$idSeleccionado){
                    $usuarioSeleccionado=$deserializado;
                }
            }
            //Serializo el objeto que quiero guardar en la sesion
            $usuarioSeleccionadoSerializado=serialize($usuarioSeleccionado);
            //Borro de la memoria las personas que sobran
            $this->session->__unset("usuPueden");
            //Guardo en memoria el usuario seleccionado serializado
            $this->session->__set("usuSel", $usuarioSeleccionadoSerializado);
            $this->_redirect("/consulta/elejirespecialidad");
                
        }else{
            $puede=array();
            $noPuede=array();
            $idUsuario=$this->session->__get("idUsuario");
            $model= new Application_Model_Historico();
            //Traigo usuarios de Historico, si estan
            $identificacion = $model->obtenerIdetificacion($idUsuario);
            $servicioUsuario= new Application_Service_Usuario();
            //Cargo en un array el documento y lo que identifica x ejemplo si es con numero de hijo o dn si es otro etc...
            $usuarioHis=$servicioUsuario->devolverDocumentoEIdentificacion($identificacion,$desactivarPadron,$idUsuario);
            //Verifico que el padron no este desabilitado
            if($desactivarPadron==1){
                           
                if(count($usuarioHis)==0 ){
                    $m="Este documento no esta habilitado para reserva telefonica, debe ir a la ventanilla de dia y hora para coordinar numero, luego quedara registrado para el 0800.";
                    $this->session->__set("error", $m);
                    $this->_redirect("/index");
                }else{
                    //En caso de que exista en el historico, proceso todas las personas, para mostrarlas en pantalla, descriminandolas si tienen documento CI o OTR
                            include_once("Clases/Persona.php");
                            foreach ($usuarioHis as $as){
                               
                                    if($as["identificatorio"]!="ci"){
                                        $p = new Persona("No verif. Padron","No verif. Padron",$as["documento"], "OTR", "No verif. Padron", "No verif. Padron", "No verif. Padron");
                                        $p->setNroHistorico($as["documento"].$as["identificatorio"]);
                                        $noPuede[]=serialize($p);
                                    }else{
                                        $p = new Persona("No verif. Padron","No verif. Padron", $as["documento"], "CI", "No verif. Padron", "No verif. Padron", "No verif. Padron");
                                        $p->setNroHistorico($as["documento"]);
                                        $puede[]=serialize($p);
                                }
                            } 
                        
                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        }
            }
            else{
                    //Si el Padron esta habilitado sigo tranqui
                    //Primero verifico que este en el padron
                 if(count($servicioUsuario->devolverUsuariosWebService($idUsuario))==0){
                      $m="La CI indicada no existe en el padrón de usuarios de ASSE.<br>
Tramite su carné en la Oficina de Carné de Asistencia y luego habilítese para reserva telefónica en la ventanilla de Día y Hora.";
                      $this->session->__set("error", $m);
                      //Si no esta en el padron no puede seguir para anotarse
                      $this->_redirect("/index");
                 }
                
//                //Si la cantidad de usuarios en 0 entonces no existe en el historico
//                if(count($usuarioHis)==0){
//                    //En caso de que no estuviera en el historico, puede pasar que este dado de baja y no fue cargado en el historico inicial. Al no estar en el historico solo tenog un numero de documento  sin numero de hijo ni nada
//                    $documento=$idUsuario;
//                }
//                else{
//                   //En la posicion 0 del array tengo el numero de documento de la persona
//                   $documento=$usuarioHis[0];
//                    }
                 //Traigo usuarios del padron (me devuelve objeto persona)
                $usuarioWeb=$servicioUsuario->devolverUsuariosWebService($idUsuario);

                //En este foreach controlo el estdo en el padron de ASSE    
                foreach($usuarioWeb as $p){
                           //Comienza FILTRADO
                     //Esto es por que los otros rompen todo en el diayhora      
//                    if($p->getTipoDoc()=='OTR'){
//                        $p->setEstado("Por mantenimiento del sistema, su documento no esta disponible para reserva telefonica.Para solicitar hora debe ir a la ventanilla del hospital. A la brevedad estara disponible nuevamente el servicio. DISCULPE LAS MOLESTIAS");
//                        $noPuede[]=serialize($p);
//                    }
                    //Primero vemos que no este fallecido
                           if($p->getEstado()=='FAL'){
                                           $p->setEstado("Persona fallecida");
                                           $noPuede[]=serialize($p);
                           }else{
                           //Si esta dado de baja y no es propietario no puede
                           if($p->getEstado()=='BAJ'&&$p->getPropietario()!=0){
                               $p->setEstado("Este usuario es hijo y además esta dado de baja, regularize su situacion en la oficina de Carné de Usuarios del Hospital");
                               $noPuede[]=serialize($p);
                           }else{
                               //Si esta dado de baja puede pasar que no pueda o sea de sanidad militar y en ese caso puede anotarse
                               if($p->getEstado()=='BAJ'){
                                   if($p->getTipoCarne()=="Sanidad Militar"){
                                       $p->setEstado("Sanidad Militar");
                                       $puede[]=serialize($p);
                                   }else{
                 
                                       if($p->getTipoDoc()=='OTR'){
                                              
                                                //Suponiendo de que todos los otros son enrealidad la misma persona, osea que si en el padron tenes 2 otros y en el historico tambien al no tener en el historico el nombre no sabes a cual corresponde en el padron
                                                //Evidentemente si en el padron esta x otro en historico su identificatorio tiene que ser distinto de ci
                                                foreach($usuarioHis as $his){
                                                    //Pregunto, si no es ci es OTR, pero puede pasar que si hay ci con hijos y OTR para ese numero de documento, el numero de hijo pase xq es diferente tambien a ci, x eso pregunto si no es numerico xq si es numerico es tambien hijo
                                                    if($his["identificatorio"]!="ci" && !is_numeric($his["identificatorio"])){
                                                        $p->setNroHistorico($his["historico"]);
                                                        $puede[]=serialize($p);
                                                    }
                                                }
                                            }
                                                if($p->getTipoDoc()=='CI'){
                                                //Como los hijos no van, solo se inscriben los titulares no importa de quien es en si el numero de CI simpre es la misma persona x se el CI unico
                                                foreach($usuarioHis as $his){
                                                    if($his["identificatorio"]=="ci"){
                                                        //Esto es para cambiar el estado a Sanidad Policial
                                                        if($p->getEstado()=="SPOL"){
                                                            $p->setEstado("Sanidad Policial");
                                                        }
                                                        $p->setNroHistorico($his["historico"]);
                                                        $puede[]=serialize($p);
                                                    }
                                                } 
                                       }
                                            }
                                            
                                   }
                               }
                   }               
                   }
                }
        }

         
        $this->view->puede=$puede;
        //Guardo todos xq si es solo uno con ci no pasa nada, pero si hay para un documento uno con ci y otro con otr el agente pregunta y despues selecciona y yo guardo el idhistorico y luego en el primer if lo busco x ese id y guardo al usuario en la sesion
        $this->session->__set("usuPueden", $puede);
        $this->view->noPuede=$noPuede;
    
}

    


    

}